home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 96 / Amiga News 96.iso / amig_ad_os / amitex / arexx / aidemacros.amitex < prev    next >
Text File  |  1997-01-18  |  17KB  |  201 lines

  1. /* Programme ARexx d'aide aux fonctions et aux macros pour AmiTex
  2.    Chez Corbin, version 1.00, 31 décembre 1996 */
  3.  
  4. options results
  5.  
  6. signal on error
  7. signal on syntax
  8.  
  9. 'LOCK(-1)'
  10. cr = '0A'x          /* saut de ligne */
  11.  
  12. do forever
  13.     chaine = '"AmiTex/Fonctions'cr'Opérateurs'cr'Maths, boucles, tests'cr'Traitement chaînes'cr'Fonctions diverses'cr'Définition fonction'cr'Fonctions blocs'cr'Commandes Édition 1'cr'Commandes Édition 2'cr'Déplacement/Recherche'cr'Fonctions interactives'
  14.     'SELECT ('chaine||cr||"Fonction spécifique"'")'
  15.     select
  16.     when result=1 then do
  17.         chaine = "Opérateurs (par"||cr||"priorité décroissante):"||cr||"^ (élévation puissance)"||cr||"/ * % (modulo)"||cr||"+ (addition) - (soustraction)"||cr||"<< >> (décalages)"||cr||"& (ET)"||cr||"? (OU exclusif)"||cr||"| (OU inclusif)"
  18.         chaine = chaine||cr||"< > <> >= <= == (comparaisons)"||cr||"= (affectation)"||cr||"+ - (signe)"
  19.     end
  20.     when result=2 then do
  21.         chaine = "Mathématiques"cr"ABS"cr"SGN"cr"INIT"cr"RESET"cr"VAL"cr"STR"cr"FOR"cr"WHILE"cr"SECURITY"cr"IF"cr"Constantes"
  22.         chaine = choix_fonction(chaine)
  23.     end
  24.     when result=3 then do
  25.         chaine = "Traitement chaînes"cr"ASC"cr"CHR"cr"LEN"cr"STR"cr"STRBIN"cr"STRHEX"cr"POS"cr"SUBS"cr"TYPE"cr"UPPER"cr"LOWER"cr"Opérations"
  26.         chaine = choix_fonction(chaine)
  27.     end
  28.     when result=4 then do
  29.         chaine = "Boucles, tests"cr"CALL"cr"DATE"cr"DAYS"cr"EXEC"cr"HELP"cr"LOADREF"cr"MACRO"cr"MENU"cr"PREFS"cr"SAVETABS"cr"TIME"cr"VERSION"
  30.         chaine = choix_fonction(chaine)
  31.     end
  32.     when result=5 then do
  33.         chaine = message_macro('DEF')
  34.     end
  35.     when result=6 then do
  36.         chaine = "Fonctions blocs"cr"BLOCK"cr"CLIPUNIT"cr"COPY"cr"MARK"cr"PASTE"cr"SAVBLOCK"cr"SUPBLOCK"cr"TEXTMARK"cr"UNMARK"
  37.         chaine = choix_fonction(chaine)
  38.     end
  39.     when result=7 then do
  40.         chaine = "Commande d'édition"cr"CATLINES"cr"CUTLINE"cr"INSLINES"cr"SUPLINES"cr"WORD"cr"READCHAR"cr"READLINE"cr"SETTABS"cr"SORT"
  41.         chaine = choix_fonction(chaine)
  42.     end
  43.     when result=8 then do
  44.         chaine = "Commandes d'édition"cr"DELBEGIN"cr"DELCHARS"cr"DELEND"cr"DELLEFT"cr"DELPREV"cr"DELRIGHT"cr"WRITE"cr"WRITETAB"cr"MODEDIT"
  45.         chaine = choix_fonction(chaine)
  46.     end
  47.     when result=9 then do
  48.         chaine = "Déplacement/Recherche"cr"BEGLINE"cr"ENDLINE"cr"GOTO"cr"TRACE"cr"WLEFT"cr"WRIGHT"cr"FIND"cr"REPLACE"cr"SEARCH"cr"SETFIND"cr"SETREP"cr"TESTCASE"
  49.         chaine = choix_fonction(chaine)
  50.     end
  51.     when result=10 then do
  52.         chaine = "Fonctions interactives"cr"ASK"cr"LOCK"cr"MESSAGE"cr"PICKCOL"cr"PICKLINE"cr"REQFILE"cr"REQUEST"cr"SELECT"cr"UNLOCK"
  53.         chaine = choix_fonction(chaine)
  54.     end
  55.     when result=11 then do
  56.         'ASK ("Fonction ou macro")'; mot = RESULT
  57.         if mot = "" then exit
  58.         chaine = message_macro(mot)
  59.     end
  60.     otherwise exit
  61.     end
  62.  
  63.     'REQUEST("'chaine'"+CHR(10)+"Autre fonction ?")'
  64.     if result < 1 then leave
  65. end
  66. 'UNLOCK(-1)'
  67. exit
  68.  
  69. procedure mot_chaine:
  70. parse arg mot,chaine
  71. chaine = translate(chaine,' ',cr)
  72. return word(chaine,mot+1)
  73. end
  74.  
  75. procedure choix_fonction:
  76. parse arg chaine
  77.     'SELECT ("'chaine'")'
  78.     mot = result
  79.     if mot < 1 then exit
  80.     mot = mot_chaine(mot,chaine)
  81.     return message_macro(mot)
  82. end
  83.  
  84. procedure message_macro:
  85. parse arg fonction
  86.     fonction=UPPER(fonction)
  87.     select
  88.     when fonction='INIT' then
  89.         return "INIT(variable,...)"cr"Supprime les variables"cr"spécifiées"cr"Le nombre des"cr"arguments est quelconque"
  90.     when fonction='RESET' then return "RESET(variable,...)"cr"Remet les variables à zéro"cr"Le nombre des"cr"arguments est quelconque,"cr"leur type également"
  91.     when fonction='DEF' then return "DEFinition fonction"cr"Pour définir la fonction"cr"MAX, entrez par exemple"cr"la ligne :"cr"DEF MAX(A,B)=IF(A>B,A,B)"cr"Le mot clé DEF doit"cr"impérativement figurer"cr"au début de la ligne"
  92.     when fonction='DATE' then return "DATE(jour)"cr"Renvoie la chaîne"cr"correspondant à la"cr"date actuelle"cr"Jour = 1: le jour de"cr"la semaine est inclus"
  93.     when fonction='DAYS' then return "DAYS(date1,date2)"cr"Renvoie le nombre"cr"de jours séparant"cr"les deux dates"cr"Le résultat est positif"cr"si la première date"cr"est antérieure."
  94.     when fonction='TIME' then return "TIME(secondes)"cr"Renvoie la chaîne"cr"correspondant à"cr"l'heure système"cr"Si secondes = 1: les"cr"secondes sont incluses"
  95.     when fonction='CHR' then return "CHR(code)"cr"Renvoie une chaîne"cr"composée du caractère"cr"dont le code ASCII"cr"a été spécifié"
  96.     when fonction='ASC' then return "ASC(chaîne,position)"cr"Renvoie le code"cr"ASCII du caractère"cr"de la chaîne"
  97.     when fonction='POS' then return "POS(sous_chaîne,chaîne)"cr"Renvoie la position"cr"de la sous-chaîne"cr"dans la chaîne"
  98.     when fonction='SUBS' then return "SUBS(chaîne,position,longueur)"cr"Renvoie la sous-chaîne"cr"de la chaîne"cr"commençant à la position"cr"spécifiée, de longueur"cr"spécifiée"
  99.     when fonction='LOWER' then return "LOWER(chaîne)"cr"Renvoie une chaîne"cr"équivalente convertie"cr"en minuscules"
  100.     when fonction='UPPER' then return "UPPER(chaîne)"cr"Renvoie une chaîne"cr"équivalente convertie"cr"en MAJUSCULES"
  101.     when fonction='LEN' then return "LEN(chaîne)"cr"Renvoie la longueur"cr"de la chaîne"
  102.     when fonction='VAL' then return "VAL(chaîne)"cr"Renvoie le nombre"cr"correspondant à"cr"la chaîne"cr"ATTENTION: les"cr"caractères alphabétiques"cr"éventuels doivent figurer"cr"en MAJUSCULES"cr"Ex: N=VAL("'""'"53"'"")'cr'VAL(""$48C"")'
  103.     when fonction='STR' then return "STR(nombre)"cr"Renvoie la chaîne"cr"correspondant au"cr"nombre spécifié"
  104.     when fonction='STRBIN' then return "STRBIN(nombre)"cr"Renvoie la chaîne"cr"obtenue en convertissant"cr"le nombre spécifié"cr"en binaire (base 2)"
  105.     when fonction='STRHEX' then return "STRHEX(nombre)"cr"Renvoie la chaîne"cr"obtenue en convertissant"cr"le nombre spécifié"cr"en hexadécimal (base 16)"
  106.     when fonction='CLIPUNIT' then return 'CLIPUNIT(unité)'cr'Choisit l''unité du'cr'presse-papiers'cr'utilisée pour les'cr'opérations de Couper/Coller'
  107.     when fonction='SAVBLOCK' then return 'SAVBLOCK(nom fichier'cr'Sauve le texte'cr'sélectionné dans'cr'le fichier spécifié'
  108.     when fonction='SUPBLOCK' then return 'SUPBLOCK(0)'cr'Efface le bloc de'cr'texte sélectionné'cr'(non récupérable)'
  109.     when fonction='TEXTMARK' then return 'TEXTMARK(-1)'cr'Renvoie le texte'cr'sélectionné'
  110.     when fonction='OPÉRATIONS' then return 'Concaténation: ""R""+""F""'cr'Comparaisons:'cr'""A""<""B""'cr'""G"">""H""'cr'""Ju""<>""ju""'cr'Rotations:'cr'""Albert""<<2  ==> bert'cr'""Albert"">>2  ==> Albe'
  111.     when fonction='TYPE'
  112.     then return "TYPE(caractère)"cr"Code dépendant du type"cr"du caractère spécifié:"cr"1: voyelle"cr"2: lettre"cr"4: majuscule"cr"8: minuscule"cr"16: nombre décimal"cr"32: espace"cr"64: signe ponctuation"cr"128: caractère ASCII"cr"256: nom de fonction"
  113.     when fonction='IF' then return "IF(expression,action1,action0)"cr"Calcule l'expression,"cr"puis exécute action 1"cr"si le résultat est non nul,"cr"sinon exécute action0"
  114.     when fonction='SECURITY' then return "SECURITY(expression)"cr"Détermine le nombre"cr"maximal de boucles"cr"admissible avant débordement"cr"Vous pouvez aussi utiliser"cr"la combinaison de"cr"touches CTRL ALT ESC"cr"pour interrompre une boucle"
  115.     when fonction='WHILE' then return "WHILE(expression,action,...)"cr"Exécute la ou les actions"cr"spécifiées tant que le"cr"résultat de l'expression"cr"est non nul"cr"Pour interrompre une"cr"boucle, appuyez"cr"sur les touches"cr"CTRL ALT ESC"
  116.     when fonction='FOR' then return "FOR(init,fin,action,...)"cr"Exécute init, puis la"cr"ou les actions"cr"spécifiées jusqu'à"cr"ce que fin soit faux"cr"Pour interrompre une"cr"boucle, appuyez"cr"sur les touches"cr"CTRL ALT ESC"
  117.     when fonction='CONSTANTES' | fonction='COL' | fonction='NBLINES' | fonction='LINE'
  118.         then return "Constantes"cr"NBLINES: nombre de lignes"cr"COL: colonne courante"cr"LINE: ligne courante"
  119.     when fonction='SGN' then return "SGN(expression)"cr"Donne 1 si l'expression a"cr"un résultat positif,"cr"0 s'il est nul ou"cr"-1 s'il est négatif"
  120.     when fonction='ABS' then return "ABS(expression)"cr"Donne la valeur absolue"cr"de l'expression"
  121.     when fonction='GOTO' then return "GOTO(colonne,ligne)"cr"Place le curseur à"cr"l'emplacement spécifié"
  122.     when fonction='BEGLINE' then return "BEGLINE(ligne)"cr"Place le curseur"cr"au début de la ligne"
  123.     when fonction='ENDLINE' then return "ENDLINE(ligne)"cr"Place le curseur"cr"à la fin de la ligne"
  124.     when fonction='TRACE' then return "TRACE(1 à 10)"cr"Argument positif:"cr"mémorise l'emplacement"cr"Argument négatif:"cr"place le curseur"cr"à cet emplacement"
  125.     when fonction='WLEFT' then return "WLEFT(mots)"cr"Déplace le curseur"cr"du nombre de mots"cr"vers la gauche"
  126.     when fonction='WRIGHT' then return "WRIGHT(mots)"cr"Déplace le curseur"cr"du nombre de mots"cr"vers la droite"
  127.     when fonction='FIND' then return "FIND(occurences)"cr"Argument positif:"cr"recherche vers la fin"cr"Argument négatif:"cr"recherche vers le début"
  128.     when fonction='SETFIND' then return "SETFIND(chaîne)"cr"Fixe la chaîne"cr"à chercher."
  129.     when fonction='SETREP' then return "SETREP(chaîne)"cr"Fixe la chaîne"cr"utilisée pour le"cr"remplacement"
  130.     when fonction='REPLACE' then return "REPLACE(occurences)"cr"Argument positif:"cr"remplacement vers la fin"cr"Argument négatif:"cr"remplacement vers le début"
  131.     when fonction='TESTCASE' then return "TESTCASE(-1/0/1)"cr"Sensibité majuscules"cr"minuscules pour recherche"cr"Argument = -1:"cr"Lecture MAJ=min"cr"Argument nul:"cr"Fixe MAJ<>min"cr"Argument = 1:"cr"Fixe MAJ=min"
  132.     when fonction='MESSAGE' then return "MESSAGE(chaînes)"cr"Affiche un message"cr"Les lignes doivent"cr"être séparées par"cr"un saut de ligne"
  133.     when fonction='REQUEST' then return "REQUEST(chaînes)"cr"Affiche une requête"cr"Renvoie 1 si OUI, 0 si NON"cr"Les lignes doivent"cr"être séparées par"cr"un saut de ligne"
  134.     when fonction='SELECT' then return "SELECT(chaînes)"cr"Permet de choisir une"cr"chaîne parmi plusieurs"cr"Renvoie son numéro"
  135.     when fonction='ASK' then return "ASK(chaînes)"cr"Affiche une requête"cr"Permet le renvoi"cr"d'une chaîne saisie"cr"au clavier"
  136.     when fonction='REQFILE' then return "REQFILE(chaîne)"cr"Permet de choisir"cr"un fichier à"cr"l'aide d''une requête"cr"système"
  137.     when fonction='BLOCK' then return "BLOCK(i)"cr"i=0: colonne début sélection"cr"i=1: ligne début sélection"cr"i=2: colonne fin sélection"cr"i=3: ligne fin sélection"
  138.     when fonction='MARK' then return "MARK(0/1)"cr"Sélection d'une zone"cr"de texte"cr"MARK(0): marquage début"cr"MARK(1): marquage fin"
  139.     when fonction='UNMARK' then return "UNMARK(0)"cr"Annule la sélection"cr"du texte"
  140.     when fonction='EXEC' then return "EXEC(chaîne)"cr"Calcule l'expression"cr"et renvoie son résultat"
  141.     when fonction='READLINE' then return "READLINE(ligne)"cr"Lecture contenu ligne"
  142.     when fonction='MENU' then return "MENU(chaîne)"cr"Permet de réaliser l'action"cr"associée au menu"cr"La chaîne doit correspondre"cr"au titre du menu"cr'Ex: MENU(""Couper"")'
  143.     when fonction='SELTEXT' then return "SELTEXT(code)"cr"code < 0: = numéro de fenêtre"cr"courante."cr"code >= 0: sélectionne la fenêtre"
  144.     when fonction='SETFONT' then return 'SETFONT(""fonte"",taille)'cr'Spécifie la fonte'cr'à utiliser dans'cr'la fenêtre courante'cr'Ex: FONT(""topaz.font"",11)'
  145.     when fonction='FILENAME' then return "FILENAME(nom)"cr"Renvoie le nom"cr"de la fenêtre"cr"si chaîne nulle"cr"sinon renomme la"cr"fenêtre."
  146.     when fonction='MACRO' then return "MACRO(numéro macro)"cr"Lance l'exécution de"cr"la macro spécifiée"cr"Les macros sont définies"cr"par ALT-F1 à ALT-F10"
  147.     when fonction='NEW' then return "NEW(titre)"cr"Initialisation du tableau"cr"courant, qui prend"cr"le titre spécifié"
  148.     when fonction='LOAD' then return "LOAD(fichier)"cr"Charge le fichier"cr"spécifié"
  149.     when fonction='OPEN' then return "OPEN(fichier)"cr"Charge le ou les fichiers"cr"spécifiés."cr"(Jokers possibles)"cr'Ex: OPEN(""Feuilles.#?"")'
  150.     when fonction='SAVE' then return "SAVE(fichier)"cr"Sauve le fichier"cr"sous le nom"cr"spécifié."cr"Renvoie 1 si OK"cr"sinon 0"
  151.     when fonction='MODIF' then return "MODIF(x)"cr"Renvoie 1 si le"cr"tableau courant"cr"a été modifié"cr"0 sinon"
  152.     when fonction='CLOSE' then return "CLOSE(fenêtre)"cr"Assure la fermeture"cr"de la fenêtre"cr"spécifiée"
  153.     when fonction='LOCK' then return "LOCK(fenêtre)"cr"Verrouille la fenêtre"cr"spécifiée."cr"Si l'argument vaut"cr"-1 toutes les"cr"fenêtres sont"cr"verrouillées"
  154.     when fonction='UNLOCK' then return "UNLOCK(fenêtre)"cr"Déverrouille la fenêtre"cr"spécifiée ou bien"cr"toutes les fenêtres"cr"si l'argument vaut -1"
  155.     when fonction='NBTEXT' then return "NBTEXT(type de fenêtre)"cr"Renvoie le nombre de"cr"fenêtres:"cr"type=1: ouvertes"cr"type=0: cachées"cr"type=-1: toutes"
  156.     when fonction='SORT' then return "SORT(sens,ligne début,ligne fin)"cr"Trie les lignes de texte"cr"dans la zone indiquée"cr"dans l'ordre aphabétique"cr"si sens > 0"cr"dans l'ordre inverse"cr"si sens < 0"
  157.     when fonction='COPY' then return "COPY(clip,chaîne)"cr"La chaîne spécifiée"cr"est recopiée dans"cr"le clip spécifié"
  158.     when fonction='MESURE' then return "MESURE(x)"cr"Renvoie la dimension"cr"de la fenêtre ou"cr"de l'écran :"cr"x=0: abscisse"cr"x=1: ordonnée"cr"x=2: largeur"cr"x=3: hauteur"cr"x=4: largeur écran"cr"x=5: hauteur écran"
  159.     when fonction='WINDOW' then return "WINDOW(x,y,l,h)"cr"Détermine la position (x y)"cr"et les dimensions (l h)"cr"de la fenêtre courante"cr"en pixels"
  160.     when fonction='SEARCH' then return "SEARCH(chaîne)"cr"Recherche le texte"cr"spécifié."cr"Accepte les caractères"cr"génériques AmigaDOS"cr"Ex: SEARCH(""""demand#?"""")"
  161.     when fonction='PASTE' then return "PASTE(clip)"cr"Le clip spécifié"cr"est recopié dans"cr"les cellules où est"cr"situé le curseur"
  162.     when fonction='SETCLIP' then return "SETCLIP(clip)"cr"Sélectionne le clip"cr"actif pour"cr"l'utilisateur (1 à 10)"
  163.     when fonction='ZEROS' then return "ZEROS(z,c|z...)"cr"Détermine si les"cr"zéros de fin doivent"cr"ou non être affichés"cr"ZEROS(cellule)"cr"Renvoie l'état"cr"correspondant"
  164.     when fonction='PRINT' then return "PRINT(zone)"cr"Imprime la zone"cr"spécifiée."
  165.     when fonction='CALL' then return "CALL(script, [arg,...])"cr"Appel du script ARexx"cr"avec passage de 0"cr"à 15 arguments."
  166.     when fonction='TITLE' then return "TITLE(titre_fenêtre)"cr"Affiche le titre"cr"spécifié dans la"cr"barre de titre de"cr"la fenêtre courante."
  167.     when fonction='CATLINES' then return "CATLINES(ligne)"cr"Unit la ligne"cr"spécifiée et la"cr"ligne qui la suit"
  168.     when fonction='CUTLINE' then return "CUTLINE(alignement)"cr"Coupe la ligne"cr"et aligne la fin"cr"sur celle-ci"cr"si demandé"
  169.     when fonction='INSLINES' then return "INSLINES(nombre lignes)"cr"Insère le nombre"cr"de lignes spécifié"
  170.     when fonction='SUPLINES' then return "SUPLINES(nombre lignes)"cr"Supprime le nombre"cr"de lignes spécifié"
  171.     when fonction='WORD' then return "WORD(0)"cr"Renvoie le mot"cr"courant"
  172.     when fonction='READCHAR' then return "READCHAR(caractères)"cr"Renvoie le nombre"cr"de caractères"cr"spécifié"
  173.     when fonction='SETTABS' then return "SETTABS(tabulations)"cr"Fixe le nombre"cr"d'espaces par"cr"tabulation"
  174.     when fonction='DELBEGIN' then return "DELBEGIN(0)"cr"Efface le début de"cr"la ligne courante"
  175.     when fonction='DELCHARS' then return "DELCHARS(caractères)"cr"Efface le nombre"cr"de caractères"cr"spécifié"
  176.     when fonction='DELEND' then return "DELEND(0)"cr"Efface la fin"cr"de la ligne"
  177.     when fonction='DELLEFT' then return "DELLEFT(n)"cr"Effacement de n"cr"mots situés à gauche"cr"du curseur"
  178.     when fonction='DELRIGHT' then return "DELRIGHT(n)"cr"Effacement de n"cr"mots situés à droite"cr"du curseur"
  179.     when fonction='DELPREV' then return "DELPREV(caractères)"cr"Efface le nombre"cr"de caractères"cr"spécifiés, situés"cr"avant le curseur"
  180.     when fonction='WRITE' then return "WRITE(chaîne)"cr"Écriture de la"cr"chaîne de caractères"cr"spécifiée"
  181.     when fonction='WRITETAB' then return "WRITETAB(tabulations)"cr"Écriture du nombre"cr"de tabulations spécifié"cr"ou déplacement seul"cr"si argument négatif"
  182.     when fonction='MODEDIT' then return "MODEDIT(0/1)"cr"Fixe le mode d'écriture"cr"MODEDIT(0): surimpression"cr"MODEDIT(1): insertion    "
  183.     when fonction='PICKCOL' then return "PICKCOL(titre)"cr"Renvoie le numéro"cr"de colonne dans lequel"cr"clique l'utilisateur"
  184.     when fonction='PICKLINE' then return "PICKLINE(titre)"cr"Renvoie le numéro"cr"de ligne dans lequel"cr"clique l'utilisateur"
  185.     when fonction='HELP' then return "HELP(fonction)"cr"Affiche l'aide"cr"en utilisant"cr"AmigaGuide"
  186.     otherwise return fonction||cr"Fonction ou macro inconnue"
  187.     end
  188. return ""
  189. end
  190.  
  191. syntax:
  192. erreur=RC
  193. 'UNLOCK(-1)'
  194. 'MESSAGE("Script AideMacros"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  195. exit
  196.  
  197. error:
  198. 'UNLOCK(-1)'
  199. 'MESSAGE("Script AideMacros"+CHR(10)+"Erreur en ligne 'SIGL'")'
  200. exit
  201.